package com.my.yc.d0304;

import javax.servlet.*;
import javax.servlet.annotation.*;
import java.io.IOException;

/**
 *  设置字符集编码
 *  value 表示过滤的资源路径
 *  * 表示0~n个字符 =》 匹配多个地址
 */

@WebFilter(filterName = "EncodingFilter",value = "/*") // *.s
public class EncodingFilter implements Filter {
    public void init(FilterConfig config) throws ServletException {
        System.out.println("EncodingFilter 初始化");
    }

    public void destroy() {
        System.out.println("EncodingFilter 销毁");
    }

    // HttpServletRequest req, HttpServletResponse resp 子类
    @Override
    public void doFilter(ServletRequest request // 父类
            , ServletResponse response
            , FilterChain chain                 // chain 过滤器链对象
    ) throws ServletException, IOException {
        System.out.println("EncodingFilter 执行过滤(前)");
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        // 默认设置资源返回的结果类型时 json
//        response.setContentType("application/json;charset=utf-8");

        // 执行后续过滤器方法 ， 如果没有后续过滤 那么请求将会送达目标资源
        chain.doFilter(request, response);
        // 在请求到达目标资源后， 响应过程会执行 过滤器链后面的代码
        System.out.println("EncodingFilter 执行过滤(后)");
    }
}
